import Vue from "vue";

import "normalize.css/normalize.css"; // A modern alternative to CSS resets

import ElementUI from "element-ui";
import * as echarts from "echarts";
import "element-ui/lib/theme-chalk/index.css";
//import locale from 'element-ui/lib/locale/lang/en' // lang i18n
import locale from "element-ui/lib/locale/lang/zh-CN";
import cloneDeep from "lodash/cloneDeep";

import "@/styles/index.scss"; // global css
import App from "./App";
import store from "./store";
import router from "./router";

import "@/icons"; // icon
import "@/permission"; // permission control
/**
 * 全局组件挂载
 */
import Pagination from "@/components/Pagination";
import Dialog from "@/components/Dialog";
import FileUpload from '@/components/FileUpload'
Vue.component("Pagination", Pagination);
Vue.component("Dialog", Dialog);
Vue.component('FileUpload',FileUpload)
/**
 * If you don't want to use mock-server
 * you want to use MockJs for mock api
 * you can execute: mockXHR()
 *
 * Currently MockJs will be used in the production environment,
 * please remove it before going online ! ! !
 */
if (process.env.NODE_ENV === "production") {
  const { mockXHR } = require("../mock");
  mockXHR();
}
//全局设置提示
Vue.prototype.msgSuccess = function (msg) {
  this.$message({ showClose: false, message: msg, type: "success" });
};
Vue.prototype.msgError = function (msg) {
  this.$message({ showClose: false, message: msg, type: "error" });
};
Vue.prototype.warning = function (msg) {
  this.$message({ showClose: false, message: msg, type: "warning" });
};

Vue.prototype.$echarts = echarts;
Vue.prototype.$cloneDeep = cloneDeep
// set ElementUI lang to EN
Vue.use(ElementUI, { locale });
// 如果想要中文版 element-ui，按如下方式声明
// Vue.use(ElementUI)

Vue.config.productionTip = false;

let loading; //
let needLoadingRequestCount = 0;
Vue.prototype.showLoading = function () {
  if (needLoadingRequestCount === 0) {
    loading = this.$loading({
      Lock: true,
      text: "加载中......",
      background: "rab(255,255,255,0.5)",
    });
  }
  needLoadingRequestCount++;
};
Vue.prototype.closeLoading = function () {
  if (needLoadingRequestCount <= 0) return;
  needLoadingRequestCount--;
  if (needLoadingRequestCount === 0) {
    if (loading) loading.close();
  }
};
new Vue({
  el: "#app",
  router,
  store,
  render: (h) => h(App),
});
